草庐IT

leetcode 2744

全部标签

leetcode 560. Subarray Sum Equals K 和为 K 的子数组(中等)

一、题目大意https://leetcode.cn/problems/subarray-sum-equals-k给你一个整数数组nums和一个整数k,请你统计并返回该数组中和为k的连续子数组的个数。示例1:输入:nums=[1,1,1],k=2输出:2示例2:输入:nums=[1,2,3],k=3输出:2提示:1-1000-107二、解题思路三个思路,第一个:三层遍历,遍历i从0到n,第二层遍历j从i到n,第三层遍历i-j,求和,这种方法会超时第二个:求累加和sum[i]=num[0]-num[i-1],这样二层遍历得到(i,j),检查sum[j]-sum[i]第三个:定义一个hash来保存s

[Leetcode62]不同路径

1.题目一个机器人位于一个 mxn 网格的左上角(起始点在下图中标记为“Start”)。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径? 示例1:输入:m=3,n=7输出:28示例2:输入:m=3,n=2输出:3解释:从左上角开始,总共有3条路径可以到达右下角。1.向右->向下->向下2.向下->向下->向右3.向下->向右->向下示例3:输入:m=7,n=3输出:28示例4:输入:m=3,n=3输出:6 提示:1题目数据保证答案小于等于 2*1092.题目分析  这是一个二维的动态规划,与一维动态规划类似,二维状态是

[Leetcode45]跳跃游戏II

1.题目给你一个非负整数数组 nums ,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。假设你总是可以到达数组的最后一个位置。 示例1:输入:nums=[2,3,1,1,4]输出:2解释:跳到最后一个位置的最小跳跃数是2。 从下标为0跳到下标为1的位置,跳 1 步,然后跳 3 步到达数组的最后一个位置。示例2:输入:nums=[2,3,0,1,4]输出:2 提示:1402.题目分析   这是一道动态规划的题目,思路求解和跳跃游戏1类似,只不过现在题目假设从起点都能到终点,找从起点到终点的最小跳数。 设dp[i]

leetcode 220. Contains Duplicate III 存在重复元素 III(困难)

一、题目大意给你一个整数数组nums和两个整数k和t。请你判断是否存在两个不同下标i和j,使得abs(nums[i]-nums[j])如果存在则返回true,不存在返回false。示例1:输入:nums=[1,2,3,1],k=3,t=0输出:true示例2:输入:nums=[1,0,1,1],k=1,t=2输出:true示例3:输入:nums=[1,5,9,1,5,9],k=2,t=3输出:false提示:0-23100来源:力扣(LeetCode)链接:https://leetcode.cn/problems/contains-duplicate-iii著作权归领扣网络所有。商业转载请联系

leetcode 227. Basic Calculator II 基本计算器 II(中等)

一、题目大意给你一个字符串表达式s,请你实现一个基本计算器来计算并返回它的值。整数除法仅保留整数部分。你可以假设给定的表达式总是有效的。所有中间结果将在[-231,231-1]的范围内。注意:不允许使用任何将字符串作为数学表达式计算的内置函数,比如eval()。示例1:输入:s="3+2*2"输出:7示例2:输入:s="3/2"输出:1示例3:输入:s="3+5/2"输出:5提示:1s由整数和算符('+','-','*','/')组成,中间由一些空格隔开s表示一个有效表达式表达式中的所有整数都是非负整数,且在范围[0,231-1]内题目数据保证答案是一个32-bit整数来源:力扣(LeetCo

leetcode 696. Count Binary Substrings 计数二进制子串(简单)

一、题目大意给定一个字符串s,统计并返回具有相同数量0和1的非空(连续)子字符串的数量,并且这些子字符串中的所有0和所有1都是成组连续的。重复出现(不同位置)的子串也要统计它们出现的次数。示例1:输入:s="00110011"输出:6解释:6个子串满足具有相同数量的连续1和0:"0011"、"01"、"1100"、"10"、"0011"和"01"。注意,一些重复出现的子串(不同位置)要统计它们出现的次数。另外,"00110011"不是有效的子串,因为所有的0(还有1)没有组合在一起。示例2:输入:s="10101"输出:4解释:有4个子串:"10"、"01"、"10"、"01",具有相同数量的

【重要】LeetCode 662. 二叉树最大宽度

题目链接注意事项根据满二叉树的节点编号规则:若根节点编号为u,则其左子节点编号为u一个朴素的想法是:我们在DFS过程中使用两个哈希表分别记录每层深度中的最小节点编号和最大节点编号,两者距离即是当前层的宽度,最终所有层数中的最大宽度即是答案。而实现上,我们可以利用先DFS左节点,再DFS右节点的性质可知,每层的最左节点必然是最先被遍历到,因此我们只需要记录当前层最先被遍历到点编号(即当前层最小节点编号),并在DFS过程中计算宽度,更新答案即可。关于编号溢出问题,之所以溢出仍能AC是因为测试数组中没有同层内「宽度」左端点不溢出,右端点溢出,同时该层就是最大宽度的数据点。我们可以通过u=u-map.

leetcode 647. Palindromic Substrings回文子串(中等)

一、题目大意给你一个字符串s,请你统计并返回这个字符串中回文子串的数目。回文字符串是正着读和倒过来读一样的字符串。子字符串是字符串中的由连续字符组成的一个序列。具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。示例1:输入:s="abc"输出:3解释:三个回文子串:"a","b","c"示例2:输入:s="aaa"输出:6解释:6个回文子串:"a","a","a","aa","aa","aaa"提示:1s由小写英文字母组成来源:力扣(LeetCode)链接:https://leetcode.cn/problems/palindromic-substrings著作权

leetcode 205. Isomorphic Strings 同构字符串(简单)

一、题目大意给定两个字符串s和t,判断它们是否是同构的。如果s中的字符可以按某种映射关系替换得到t,那么这两个字符串是同构的。每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。不同字符不能映射到同一个字符上,相同字符只能映射到同一个字符上,字符可以映射到自己本身。示例1:输入:s="egg",t="add"输出:true示例2:输入:s="foo",t="bar"输出:false示例3:输入:s="paper",t="title"输出:true提示:1t.length==s.lengths和t由任意有效的ASCII字符组成来源:力扣(LeetCode)链接:https://leetc

leetcode 242. Valid Anagram 有效的字母异位词(简单)

一、题目大意https://leetcode.cn/problems/valid-anagram给定两个字符串s和t,编写一个函数来判断t是否是s的字母异位词。注意:若s和t中每个字符出现的次数都相同,则称s和t互为字母异位词。示例1:输入:s="anagram",t="nagaram"输出:true示例2:输入:s="rat",t="car"输出:false提示:1s和t仅包含小写字母进阶:如果输入字符串包含unicode字符怎么办?你能否调整你的解法来应对这种情况?二、解题思路建立一个哈希表映射,一共26个字母,可以用一个数组来代替哈希表,我们先判断两个字符串长度不相同返回false。然后